/**
 * Created by zhourh on 2018/9/11.
 * 计算给定二叉树的所有左叶子之和。

 示例：

 3
 / \
 9  20
 /  \
 15   7

 在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24
 */
public class SumLeftLeaves {

    public static void main(String[] args) {
        Printer.printTreeNode(Converter.convertArray2TreeNode(new Integer[]{3, 9, 20, null, null, 15, 7, null, null, null, null}));
        System.out.println(new SumLeftLeaves().sumOfLeftLeaves(Converter.convertArray2TreeNode(new Integer[]{3, 9, 20, null, null, 15, 7, null, null, null, null})));
    }

    public int sumOfLeftLeaves(TreeNode root) {
        if (root == null) {
            return 0;
        }

        return sumOfLeftLeaves(root.left, true) + sumOfLeftLeaves(root.right, false);
    }

    public int sumOfLeftLeaves(TreeNode node, boolean isLeft) {
        if (node == null) {
            return 0;
        }

        if (isLeft && node.left == null && node.right == null) {
            return node.val;
        }

        return sumOfLeftLeaves(node.left, true) + sumOfLeftLeaves(node.right, false);



    }
}
